Image size triggered clarification to maintain image sharpness

ABSTRACT

An application engine renders an image based on image data from a content source. A display engine displays the image to a user. The image is adjustable from a first size to a second size. A detection system detects the size adjustment. An application executes a clarification routine to maintain sharpness of the image.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a continuation of U.S. patent application Ser. No.16/682,911, filed on Nov. 13, 2019, which claims priority from U.S.Provisional Patent Application No. 62/768,705, filed on Nov. 16, 2018and U.S. Provisional Patent Application No. 62/842,844, filed on May 3,2019, all of which are incorporated herein by reference in theirentirety.

BACKGROUND OF THE INVENTION 1). Field of the Invention

This invention relates to a viewing system and to a method of viewingcontent.

2). Discussion of Related Art

A personal computer usually has a stand-alone screen in the form of alaptop screen or a separate screen that is connected to a centralprocessing unit. Applications that display images, such as browsers thatdisplay browser windows and content in web pages, word processingapplications that display windows with text in the windows, or the like,are designed to display such content so that the user can typically readthe content comfortably between a distance 0.25 meters and 1 meters.When the user moves further away from the display, the content simplybecomes smaller within the view of the user.

Three-dimensional viewing systems are also sometimes used for viewingcontent. A three-dimensional viewing system may have a head-mountableframe and left and right displays in front of left and right eyes of auser. The displays may create images or project images that are slightlydifferent from one another to give the user the impression of depth.Alternatively, or additionally, a respective display may adjust a focallength to various depths.

The user can, for example, receive a browser window with a web page at adistance of 2 meters from the user. In addition, the browser window canmove towards the user or away from the user following user interactionwith sensors that are usually located on the head-mountable unit andtrack movement of the head of the user and/or body parts of the user.

SUMMARY OF THE INVENTION

The invention provides a viewing system including a content source tohold image data, an application engine, forming part of an application,communicatively connected to the content source to receive the imagedata and render an image based on the image data, a display enginecommunicatively connected to the application engine to display the imageto a user, the image having a first size, the image being adjustable toa second size that is smaller than the first size, and a detectionsystem that detects a measure indicative of adjustment of the image fromthe first size to the second size, wherein the application, in responseto the detection, executes a clarification routine to maintain sharpnessof the image.

The invention also provides a method of viewing content includingrendering, with an application engine, an image based on image data froma content source, displaying, with a display engine, the image to a userand the image having a first size, the image being adjustable to asecond size that is smaller than the first size, detecting, with adetection system, a measure indicative of adjustment of the image fromthe first size to the second size and executing, with an application,based on the detection, a clarification routine to maintain sharpness ofthe image.

BRIEF DESCRIPTION OF THE DRAWINGS

The invention is further described by way of examples with reference tothe accompanying drawings, wherein:

FIG. 1 is a block diagram of a viewing system according to a firstembodiment of the invention;

FIGS. 2A, 2B and 2C are a flow chart illustrating functioning of theviewing system in FIG. 1 ;

FIG. 3A illustrates an image that is displayed before being resized;

FIG. 3B displays the image after being resized and it has maintained itssharpness;

FIG. 3C illustrates the image that has been resized without maintainingits sharpness;

FIGS. 4A to 4F illustrate re-scaling aspects within the context of abrowser window;

FIG. 5 is a flowchart that illustrates functioning the first embodimentat a high level;

FIG. 6 is block diagram of a viewing system according to a secondembodiment of the invention;

FIGS. 7A and 7B are a flowchart illustrating functioning of the viewingsystem of FIG. 6 ;

FIG. 8 is a block diagram of a machine in the form of a computer thatcan find application in the present invention system, in accordance withone embodiment of the invention.

DETAILED DESCRIPTION OF THE INVENTION

FIG. 1 of the accompanying drawings illustrates a viewing system 10,according to an embodiment of the invention, including a content source12, a display engine 16, a stereoscopic viewer 18, and an application20. The viewing system 10 may use a re-scale routine to maintainsharpness of an image.

The display engine 16 and the application 20 are software systems thatreside on a computer-readable storage medium and are executable by aprocessor of the viewing system 10. The display engine 16 and theapplication 20 are communicatively connected to one another throughcalls and subroutines as will be commonly understood by one of skill inthe art.

The stereoscopic viewer 18 is a hardware component that is connected tothe processor via a physical or wireless connection. The stereoscopicviewer 18 is also communicatively connected to the display engine 16.

The application 20 includes an application engine 14, an applicationcompositor 30 and a frame size determinator 32.

The content source 12 is a hardware component that is connected to theprocessor. The content source 12 is also communicatively connected tothe application engine 14. The content source 12 is capable of carryingimage data. Such image data may for example be a still image such as aphotograph or a document. The image data may alternatively be a movingimage such as a document or a web page that moves when a user scrollsthe document or web page, or may be successive frames of images thatform a movie.

The application engine 14 may for example be a picture viewer, adocument editing application, a browser, a movie viewer or the like thatis capable of rendering an image based on the image data.

The display engine 16 determines a height (H) and width (W) of afield-of-view 22 that is specific to the stereoscopic viewer 18. Thefield-of-view 22 has a buffer texture 24 having a frame size. A “framesize” is a term that is generally used in the art for indicating thecombination of a number of horizontal pixels (X′) and a number ofvertical pixels (Y′).

The application compositor 30 has an application buffer 28. Theapplication compositor 30 draws an image into the application buffer 28.The display engine 16 stretches the image in the application buffer 28using the coordinates of the buffer texture 24, and then displays theimage to the user.

The stereoscopic viewer 18 may have a frame that is mountable to a headof a viewer with left and right displays in front of left and right eyesof the viewer. Depending on the configuration, the display in front ofthe eyes may appear as a single display but may be configured to projecttwo different images, one per eye. The stereoscopic viewer 18 receivesthe image from the display engine 16 and displays the image to theviewer within the field-of-view 22. The display engine 16 may displayimages that are slightly different to left and right eyes of the user togive the user a perception of depth. The display engine 16 may displayeach image at an adjustable field of depth to also give the user aperception of depth while accommodating sight-related enhancements suchas “vergence accommodation”. The image that is displayed within thebuffer texture 24 is thus perceived by the user to be at a particularvirtual distance from the user.

The frame size determinator 32 includes a texture size calculator 26, alook-up table 34 and a look-up algorithm 36. The look-up table 34 has aplurality of distances in an X-column and a plurality of frame sizes ina Y-column with each frame size corresponding to a respective distance.The frame size may, for example, be represented by a number of pixels ina single direction (e.g. frame width, or frame height, or diagonal). Theframe size may then be a simply calculated by applying, for example, afixed aspect ratio. The frame sizes decrease with increasing distancebetween the user and the virtual content. The look-up algorithm 36receives a virtual distance between the user and the virtual content asan input and determines a select distance among the distances in theX-column corresponding to the virtual distance. The look-up algorithm 36then determines a frame size corresponding to the select distance.

The look-up table 34 may have been created by first displaying an imageon the viewing system 10, and then measuring the number of pixels thatthe image occupies on the stereoscopic viewer 18. The image may beincrementally moved away from the user and the new frame sizes measured.The distance and corresponding number of pixels may be aggregated andplaced in a table to form the look-up table 34. Other suitable methodsof creating the look-up table may be used. The look-up table 34 andlook-up algorithm 36 may alternatively be replaced with an interpolationalgorithm that may serve the same function as look-up table 34 andlook-up algorithm 36, but may use one or more interpolation algorithms,such as a spline interpolation algorithm, or the like.

FIGS. 2A, 2B and 2C show the functioning of the viewing system 10 inmore detail. At 50, the look-up table 34 is stored in memory. As notedabove, the look-up table 34 has a plurality of distances and a pluralityof frame sizes corresponding to the respective distances. Referencenumeral 52 represents that image data is held on the content source 12.At 54, the application engine 14 renders an image based on the imagedata.

At 56, the application buffer 28 receives the image from the applicationengine 14. The application buffer 28 has a predetermined size and theimage from the application engine 14 fills the application buffer 28.

At 60, the display engine 16 displays the image to the user at a firstvirtual distance relative to the user wherein the image has a firstsize. The display engine 16 may for example display a browser window ora document viewer window at a default location and with a pre-setmaximum surface. The default location may be a preselected,user-friendly location where it is easy for the user to view the image.The image may comprise text, pictures, and/or other visual content. Ifthe image comprises text, the image is preferably displayed at a defaultdistance from the user so that the user can easily read the text.

The maximum surface may be the largest possible texture that the viewingsystem 10 assigns to the image. The stereoscopic viewer 18 may have aresolution of 1280-960 pixels. The viewing system 10 may assign amaximum frame size for a given application, window, or type of content,(e.g., a browser window). A browser application may be a landscapeapplication (which means that it can be simultaneously displayed withother application windows). A browser application may not be animmersive application (wherein one application window takes over theentire field-of-view), and the assumption may therefore be made that thebrowser window will never take up the entire field-of-view (e.g.1280×960), and thus a value of 1120 pixels may be chosen (e.g. with afixed aspect ratio) because it is slightly smaller than 1280 pixels,which may allow for a border or a small portion of the field-of-viewthat will not contain the browser window. Choosing a maximum surfaceframe size of larger than 1280 pixels will exceed the resolution of thestereoscopic viewer 18, in which case the viewing system 10 may apply aminimal filter to match the display resolution when displaying thecontent to the user, which in turn may result in unnecessary processingpower to display an image of equivalent resolution (i.e. maximum surfaceof 1280 pixels being equivalent to 1120 pixels after the minimal filteris applied to the 1280 pixels).

The stereoscopic viewer 18 may have a number of systems that detectmovement of the stereoscopic viewer 18 relative to real world objects.For example, the stereoscopic viewer 18 may have an inertial measurementunit with one or more accelerometers that detect acceleration and agyroscope the detects rotation of the stereoscopic viewer 18. Inaddition, the stereoscopic viewer 18 may have a camera system thatcaptures images of real world objects and can track the movement of thereal world objects within the view of the stereoscopic viewer 18. Thesesystems provide “intelligence” that permit detection of movement of thestereoscopic viewer 18 relative to the real world objects. When thestereoscopic viewer 18 moves relative to the real world objects, theimage that is displayed by the display engine 16 may also move withinthe view of the stereoscopic viewer 18. For example, if the image isdisplayed to the user that gives the user the impression that the imageis located on a wall, and if the user walks closer to the wall, thedepth that the image is displayed also moves closer to the user to givethe impression to the user that the image remains on the wall. The imagewill also become larger within the field of view of the user.

It is also possible for the user to interact with the display engine 16to increase the size of the image. The stereoscopic viewer 18 may, forexample, have one or more cameras that can capture gestures made by ahand of a user and the viewing system 10 may interpret such gestures toincrease the size of the image. The user may increase the size of theimage by moving the image closer to the user or may increase the size ofthe image while the image remains at a stationary virtual distancerelative to the user.

If the image becomes larger (e.g. the user walks towards the image), therendered resolution may change (e.g. increase), but the size of theapplication buffer 28 may remain the same. Traditional systems may use abuilt-in re-sizing feature, broadly called “mipmapping” that may causeblurriness of the image. Mipmapping may include the use of filters thatare well known in the art, for example a “mean filter”, a “Gaussiansmoothing filter”, a ‘bilinear filter”, etc. For example, if a browserwindow moves further away and fewer pixels are available to the browserwindow, an averaging method may be used wherein four adjacent pixels inthe first image are displayed as a single pixel in a second image. Thesingle pixel may be given an average pixel value between 0 and 255representing the average of the four pixels that were originallydisplayed (in the first image), resulting in blurriness in the secondimage.

At 62, the image is moved to a second virtual distance relative to theuser wherein the image has a second size that is smaller than the firstsize. In the given example, the user may move further away from the walland the display engine 16 may maintain the impression that the imageremains on the wall by moving the image further away from the userwithin the view of the user which consequently also makes the imagesmaller. Fewer pixels are now available to display the image.Traditional mipmapping techniques may take four originally-displayedpixels, average their pixel value and display the averaged value as asingle pixel. Such averaging of pixel values may result in blurriness.

Traditional systems may have been used for purposes of displaying imageson stand-alone computer displays. For example, a browser window may bedisplayed on a traditional stand-alone computer display. A user may thenuse controls to zoom in to or out of a web page. Such zooming in to andout of a web page may trigger a mipmapping filtering technique. When theuser moves away from the stand-alone computer display, the browserwindow becomes smaller within the view of the user, because it becomessmaller within the field of the view of the eye of the user. The windowis not, additionally, made smaller and there is no zooming out withinthe window as a result of the user moving away from the stand-alonecomputer display. The window remains static relative to the stand-alonecomputer display and only becomes smaller within the field-of-view ofthe eye of the user. As a consequence, the image in the display does notbecome more blurry when the user moves away from the stand-alonecomputer display.

At 64, a movement detection system of the application 20 detectsmovement of the image to the second virtual distance relative to theuser. The detection of the movement is a detection of a measureindicative that the image has become smaller. A change in a size of theimage (smaller or larger) may necessitate a clarification routine tomaintain sharpness (as opposed to blurriness) of the image.

At 66, the user, additionally, may interact with the display engine 16to change the size of the image from a first size to a second size. At68, a detection system detects a measure indicative of adjustment fromthe first size to the second size. At 70, in response to the detectionat 68, a scale factor may be determined to account for the adjustment at66. The scale factor may ultimately be sent to subroutine 82(optionally, via subroutines 64, 74, 76, and/or 78), where determiningthe frame size may, at least in part, be determined by the scale factor.The scale factor may, for example, be determined by calculating theratio of the displayed image before and after user manipulation. Forexample, an image may initially be displayed at 1280 pixels (e.g. fullresolution/full buffer). The image may move away from the user, and thusbe at 640 pixels (which may be determined by look-up table 34 based onthe distance of the image from the user). The user may then stretch theimage to make it bigger, by a scale factor of 1.5 (i.e. the image is now50% larger than it was), resulting in a post-adjusted image having 960pixels at the same distance as the pre-adjusted image having 640 pixels.The user may now walk towards the image. The look-up table 34 maydetermine that the image should be 750 pixels, based on the distancebetween the browser window and the user, and after the scale ratio isapplied, the screen should actually be 1100 pixels. The scale factorfrom the look-up table 34 and given by the look-up algorithm 36, is thusmultiplied by the scale ratio. Depending on the particular situation,the image may become smaller at 60 and larger at 66, smaller at 60 andsmaller at 66, remain unchanged at 60 and enlarges or becomes smaller at66, etc. For purposes of further discussion, the effect of userinteraction at 66 is ignored in favor of the detection at 64 of thechange in the virtual distance, wherein the virtual distance may be thedistance between the user and the virtual content/image.

At 74, a determination is (optionally) made whether the movement fromthe first virtual distance to the second virtual distance is more than apredetermined minimum threshold distance. At 76, a determination is(optionally) made whether a predetermined minimum threshold amount oftime has passed between the movement from the first virtual distance andthe movement of the second virtual distance. The predetermined minimumthreshold distance may, for example, be 0.25 meters. The predeterminedminimum amount of time may be, for example, one second or one minute.The thresholds referred to at 74 and 76 may be set to avoid a jitteryexperience due to clarification updates that may be too frequent.

At 78, a determination is (optionally) made whether the movement fromthe first virtual distance to the second virtual distance is less than apredetermined maximum threshold distance. A predetermined maximumthreshold distance may, for example, be 4 meters. If the second virtualdistance is more than 4 meters, there may be no need for a clarificationroutine to be carried out because the image may be too small for theuser to read. In particular, text on a web page or in a document may betoo small for the user to see. Any image adjustment due to traditionalmipmapping techniques are thus acceptable because the blurrinessresulting from such techniques will not negatively effect userexperience. One or more of the thresholds at 74, 76, and 78, may bedetermined through user testing. It may be possible to execute 74, 76,and 78 in another order or eliminate one or more of the operations.

In the described embodiment, if a determination is made that 74, 76 and78 are all positive, then the system proceeds to 82 wherein the framesize determinator 32 determines a select frame size that corresponds tothe second virtual distance. Various techniques may be employed to dothe determination at 82, for example techniques based on the secondvirtual distance, techniques based on a match with an appropriate rendersize, techniques based on a final render resolution, techniques based onthe number of pixels available for content display, etc. Thedetermination at 82 includes a determination, at 84, wherein the look-upalgorithm 36 (I) selects a select distance from the look-up table 34based on the second virtual distance and (II) determines a select framesize which is the frame size corresponding to the selected distance. Theselected frame size then forms the basis for a clarification routine.

Block 94 indicates that the buffer size remains unchanged from thebuffer size referred to at block 56.

At 98, the application 20 executes a clarification routine thatmaintains sharpness of the image based on the frame size allocated tothe image when displayed to the user through the stereoscopic viewer 18.It can be noted that the clarification routine is in response to thedetection at 64 of the movement of the image to the second virtualdistance. At 100, the application compositor 30 receives the selectframe size from the frame size determinator 32. In the present example,the frame size determinator 32 has provided a selected frame size of700.

At 102, the texture size calculator 26 calculates coordinates of theimage based on the frame size. Vertical and horizontal coordinates maybe adjusted by the same amount to maintain a fixed aspect ratio of theimage.

At 104, the application compositor 30 draws a new image at the new imagesize within the application buffer 28. The size of the applicationbuffer 28 still remains unchanged, as indicated by block 94. In thegiven example where the frame size reduces from 1120 to 1000, only 1000pixels are drawn in the application buffer 28 and a proportionaladjustment is made on the vertical axis of the image. The updated imagethus has fewer pixels than if the entire buffer is used. By drawingfewer pixels in the application buffer 28, fewer processing cycles arerequired and less power is consumed than if the image fills the entirebuffer.

At 105, the updated image information, such as number of pixels, size,and/or resolution, is sent to content associated with the application.Some examples of content associated with the application are applicationpreviews (e.g. a screenshot of an application that may appear upon hoverof an application icon), dialogue boxes (e.g. a box that statesapplication content can't be accessed, or a request for a user nameand/or password), a control box, an information box, other pop-ups,and/or any other widgets, or views, or secondary windows that may be atleast partially based on the resolution and/or size and/or number ofpixels of the application or application window. The content associatedwith the application may, for example, be a dialogue box allowing theuser to navigate files. The content associated with the application maynot be content within the application window, but may be a secondarywindow, such as a child to the parent application window, which may betriggered and controlled by the application window. The contentassociated with the application window may be a preview of theapplication window, such as a browser application displaying a previewof a browser window. A preview may be created for use by an applicationhistory feature, and/or as a screenshot of the application window thatmay be displayed when a cursor hovers over an application icon. At 106,the application compositor 30 provides of the entire buffer with theupdated image (and corresponding texture/UV coordinates) to the displayengine 16 for display to the user.

It may in certain implementations be useful to skip the routine at 105,which may result in a preview (e.g. screen shot image) that displays theentire buffer, including the portion of the buffer that the image wasnot drawn into. Skipping routine 105 may thus result in the system notapplying the UV coordinates to the content associated with theapplication window, and the preview therefore copying the full bufferframe (e.g. 1000×1000 pixels) and then drawing the full buffer frame ata smaller size (e.g. 50×50 pixels). The inclusion of routine 105 mayenable the preview to only copy the portion of the buffer frame thatcontains the updated image, thus preventing the preview from comprisingthe portion of the buffer that the image was not drawn into.

In applications where the content associated with the application is adialogue box, and the application is a browser application that displaysone or more browser windows, skipping routine 105 may result in thedialogue box moving relative to the browser window every time thebrowser window size and/or resolution is updated. For example, thedialogue box may start in the upper right hand corner of the applicationwindow, but may appear at the center of the browser window if thedistance between the user and the browser window increases. By way ofexample, the browser window may have a first size of 1000×1000 pixels,and the dialogue box may start at 200,200 pixels. If the 1000×1000 pixelbrowser window were resized to 500×500 by all or part of the routinesdescribed in FIGS. 2A-2C, then the dialogue box would remain at 200, 200if routine 105 is not executed. With the inclusion of routine 105 in theflow, the dialogue box would move to 100, 100 to maintain itsproportional location relative to the browser window.

At 88, the display engine 16 executes a stretching operation. Astretching operation may be executed when the image is made larger orwhen the image is made smaller. The stretching operation may beperformed when the display engine 16 stretches the updated image to fitthe final display size as viewed by the user, by utilizing the texturecoordinates to extract the portion of the application buffer that theupdated image fills. If asynchronous frame updating is carried out, theprocess of executing the clarification routine at 98 occurs during afirst frame update of the display engine, and the process of executingthe stretching operation at 88 occurs during a different frame update ofthe display engine. In this case of asynchronous frame updates, the usermay notice visual abnormalities, such as jerkiness of jitter in theimage. To avoid jerkiness, the process of executing the stretchingoperation at 88 and executing the clarification routine at 98 may occurwithin a single frame update of the display engine, i.e. synchronousframe updates. Synchronous frame updates result in smoother visualtransitions when the displayed image updates from a first image at afirst resolution to a second image at a second resolution, when comparedto asynchronous frame updating.

After the display engine stretches the updated image, at 90, the updatedimage may be displayed to the user.

At 92, a new virtual distance or change in virtual distance is detected,and the process loops back to step 74.

FIG. 3A illustrates the image before being resized. In FIG. 3B, theimage has been made smaller. The image remains sharp because of theclarification routine 98 in FIG. 2C that is carried out by theapplication 20 in FIG. 1 . FIG. 3C illustrates that the image is blurryif the clarification routine at 98 is not employed and a mipmappingroutine is instead employed as described above. As mentioned above, animage may also be permitted to become blurry if a determination is madeat 78 in FIG. 2B that the second virtual distance is more than themaximum threshold distance.

FIGS. 4A to 4F illustrate certain display aspects referred to above inmore detail. In FIG. 4A, a buffer, by way of example, has a frame sizeof 1000×800 and has a texture that fills the entire space (1,1). In FIG.4B, the space where the image will be displayed in the final renderscene (to the user) has been reduced to a frame size of 900×750. In FIG.4C, the image fills the pixel space. It may, in some embodiments, berequired that the display engine 16 in FIG. 1 apply a filter so that alarger texture (1000×800) is displayed within a smaller browser window(900×750). There is thus a reduction in the frame size. If the contentis subsequently made smaller, the system, in the absence of theclarification routine at 98 carried out by the application 20, willrepeat FIGS. 4B and 4C, which is all that is required for systems thatrun on a stand-alone computer display.

In FIG. 4D, the frame size (i.e. the number of pixels allocated todisplay the image to the user) is further reduced (700×600). As shown inFIG. 4E, the buffer size has remained unchanged (1000×800). However, thetexture size is adjusted according to, in some embodiments, the look-uptable 34 (800×700). As shown in FIG. 4F, the display engine 16 in FIG. 1may apply a filter so that the larger texture (800×700) is displayedwithin a smaller browser window (700×600). Although a filter is stillused in 4F, the difference between the image size in the buffer and thefinal render size of the image are close enough, to where there shouldnot be a user noticeable decrease in image quality. In situations wherethe full buffer image (1000×800) needs to be displayed in a relativelysmall final render size (e.g. 700×600), the filter may reduce the imagequality to a user noticeable level. In some embodiments, FIGS. 4D to 4Fmay be repeated and frame size may be updated when a new distancebetween the user and displayed image is measured. In some embodiments,the system may wait to adjust the image size until the image has notmoved for a threshold period of time, so FIGS. 4D to 4F only need tooccur once for given movement of the content relative to the user.

FIG. 5 is a high-level flowchart of the re-scale routine describedabove. At 200 the application content is displayed in an applicationwindow (or prism) in a final render scene. At 202, a size of applicationwindow/prism, relative to user is changed. At 204, the display engine 16notifies the application 20 of the distance between the user andapplication window. At 206, a re-scale of content based on distancebetween the user and application window is carried out. At 208, thedisplay engine 16 re-displays the application content.

FIG. 6 illustrates a viewing system 10A, according to another embodimentof the invention. The viewing system 10A of FIG. 6 is in many respectssimilar to the viewing system 10 of FIG. 1 and like reference numeralsindicate like or similar components.

As discussed with reference to FIG. 1 , the display engine 16 provides auser distance to the frame size determinator 32 of the application 20.In FIG. 6 , the display engine 16A does not provide a user distance tothe frame size determinator 32A of the application 20A. Instead, thedisplay engine 16A provides a screen size to the frame size determinator32A. The screen size may, for example, be a size corresponding to thebuffer texture 24A.

The frame size determinator 32A does not have a look-up table or alook-up algorithm that determines a texture size based on a userdistance. Instead, the texture size calculator 26A uses the screen sizereceived from the display engine 16A to determine a desired texturesize.

The application engine 14A receives the texture size from the frame sizedeterminator 32A. The application compositor 30A writes the image sizein the application buffer 28A. The display engine 16A retrieves theimage from the application buffer 28A and display the image to the userwithin the buffer texture 24A.

FIGS. 7A and 7B illustrate the functioning of the viewing system 10A ofFIG. 6 . The operations that are carried out in FIGS. 7A and 7B aresimilar to the operations that are carried out in FIGS. 2A, 2B and 2Cand like reference numerals indicate like or similar operations. Thealgorithm represented by FIGS. 7A and 7B omits certain operations thatare included the algorithm of FIGS. 2A, 2B and 2C, in particularoperations at blocks 62 to 78, the operation at block 84 and theoperations at blocks 90 and 92.

The viewing system 10 of FIG. 1 has the advantage that texture sizes canbe adjusted to accommodate various viewing distances. However, theviewing distances may not always be accurately detected or be detectedto a high level of accuracy. The viewing system 10A of FIG. 6 has theadvantage that screen sizes are exact sizes, resulting in ultimatetexture sizes that are more accurately calculated and displayed to auser. The screen size may still be adjusted based on a detection ofmovement of the user. However, the screen size remains stable when theuser does not move with less “drifting” or inaccuracies that areassociated with a movement-based detection system. The user thusperceives less variability in the screen size that is displayed to theuser. Although the image may be adjusted from a first size to a secondsize using either the viewing system 10 of FIG. 1 or the viewing system10A of FIG. 6 , there is less jitter in the image size when using theviewing system 10A of FIG. 6 .

FIG. 8 shows a diagrammatic representation of a machine in the exemplaryform of a computer system 900 within which a set of instructions, forcausing the machine to perform any one or more of the methodologiesdiscussed herein, may be executed, according to some embodiments. Inalternative embodiments, the machine operates as a standalone device ormay be connected (e.g., networked) to other machines. Further, whileonly a single machine is illustrated, the term “machine” shall also betaken to include any collection of machines that individually or jointlyexecute a set (or multiple sets) of instructions to perform any one ormore of the methodologies discussed herein.

The exemplary computer system 900 includes a processor 902 (e.g., acentral processing unit (CPU), a graphics processing unit (GPU) orboth), a main memory 904 (e.g., read only memory (ROM), flash memory,dynamic random access memory (DRAM) such as synchronous DRAM (SDRAM) orRambus DRAM (RDRAM), etc.), and a static memory 906 (e.g., flash memory,static random access memory (SRAM), etc.), which communicate with eachother via a bus 908.

The computer system 900 may further include a disk drive unit 916, and anetwork interface device 920.

The disk drive unit 916 includes a machine-readable medium 922 on whichis stored one or more sets of instructions 924 (e.g., software)embodying any one or more of the methodologies or functions describedherein. The software may also reside, completely or at least partially,within the main memory 904 and/or within the processor 902 duringexecution thereof by the computer system 900, the main memory 904 andthe processor 902 also constituting machine-readable media.

The software may further be transmitted or received over a network 928via the network interface device 920.

The computer system 900 includes a laser driver chip 950 that is used todrive projectors to generate laser light. The laser driver chip 950includes its own data store 960 and its own processor 962.

In some embodiments, the computer system 900 and/or the viewing system10 may be all or part of the mixed reality system as described in U.S.patent application Ser. No. 14/331,218 which is incorporated byreference herein.

While certain exemplary embodiments have been described and shown in theaccompanying drawings, it is to be understood that such embodiments aremerely illustrative and not restrictive of the current invention, andthat this invention is not restricted to the specific constructions andarrangements shown and described since modifications may occur to thoseordinarily skilled in the art.

What is claimed:
 1. A viewing system comprising: a content source tohold image data; an application engine, forming part of an application,communicatively connected to the content source to receive the imagedata and render an image based on the image data; a display enginecommunicatively connected to the application engine to display the imageto a user, the image having a first size, the image being adjustable toa second size that is smaller than the first size, wherein the displayengine displays the image to a user at a first virtual distance relativeto the user and the image having the first size, the image being movableto a second virtual distance relative to the user and the image havingthe second size that is smaller than the first size; and a movementdetection system that detects movement of the image to the secondvirtual distance relative to the user as a measure indicative ofadjustment of the image from the first size to the second size, whereinthe application, in response to the detection, executes a clarificationroutine to maintain sharpness of the image.
 2. The viewing system ofclaim 1, wherein the image is adjustable from the first size to thesecond size by user interaction with the display engine.
 3. The viewingsystem of claim 1, wherein the application includes: an applicationcompositor that receives the select frame size from the frame sizedeterminator and the image from the application engine and scales theimage based on the frame size.
 4. The viewing system of claim 3, whereinthe application includes: an application buffer that receives the imagefrom the application engine, wherein the application compositor draws asubset of the image in the application buffer, the subset having asample interval based on the select frame size and includes fewer pixelsthan if the buffer is entirely written.
 5. The viewing system of claim4, wherein fewer processing cycles are required, and less power isconsumed, to sample the subset than if the buffer is entirely sampled.6. The viewing system of claim 4, wherein the application buffer has asize that remains unchanged when the image is moved from the first tothe second virtual distance.
 7. The viewing system of claim 6, whereinthe display engine executes a stretching operation wherein the image isprogressively adjusted from the first size to the second size in aseries of cycles and a smaller section of the buffer is drawn at foreach cycle.
 8. The viewing system of claim 1, wherein the applicationenters the frame size into the application engine and the applicationengine performs, based on the frame size, a re-layout of a window areathat maintains sharpness of the image.
 9. The viewing system of claim 8,further comprising: a stereoscopic viewer connected to the displayengine to display the image to the user.
 10. The viewing system of claim1, wherein the image comprises text.
 11. The viewing system of claim 1,wherein the display engine provides a screen size to the applicationengine, a change in the screen size being the measure indicative of theadjustment of the image.
 12. A method of viewing content comprising:rendering, with an application engine, an image based on image data froma content source; displaying, with a display engine, the image to auser, wherein the image has a first size, the image being adjustable toa second size that is smaller than the first size, wherein the displayengine displays the image to a user at a first virtual distance relativeto the user and the image having the first size, the image being movableto a second virtual distance relative to the user and the image havingthe second size that is smaller than the first size; detecting, with amovement detection system, movement of the image to the second virtualdistance relative to the user as a measure indicative of adjustment ofthe image from the first size to the second size; and executing, with anapplication, in response to the detection, a clarification routine tomaintain sharpness of the image.
 13. The method of claim 12, wherein theimage is adjustable from the first size to the second size by userinteraction with the display engine.
 14. The method of claim 12, whereinthe application includes: receiving, with an application compositor ofthe application, the select frame size from the frame size determinator;and scaling, with the application compositor of the application, theimage based on the frame size.
 15. The method of claim 14, furthercomprising: receiving, with an application buffer of the application,the image from the application engine, wherein the applicationcompositor draws a subset of the image in the application buffer, thesubset having a sample interval based on the select frame size andincludes fewer pixels than if the buffer is entirely written.
 16. Themethod of claim 15, wherein fewer processing cycles are required, andless power is consumed, to sample the subset than if the buffer isentirely sampled.
 17. The method of claim 15, wherein the applicationbuffer has a size that remains unchanged when the image is moved fromthe first to the second virtual distance.
 18. The method of claim 17,wherein the display engine executes a stretching operation wherein theimage is progressively adjusted from the first size to the second sizein a series of cycles and a smaller section of the buffer is drawn atfor each cycle.
 19. The method of claim 12, further comprising:entering, with the application, the frame size into the applicationengine; and performing with the application engine, based on the framesize, a re-layout of a window area that maintains sharpness of theimage.
 20. The method of claim 19, further comprising: displaying theimage to the user with a stereoscopic viewer connected to the displayengine.
 21. The method of claim 12, wherein the image comprises text.22. The method of claim 12, wherein the display engine provides a screensize to the application engine, a change in the screen size being themeasure indicative of the adjustment of the image.
 23. A viewing systemcomprising: a content source to hold image data; an application engine,forming part of an application, communicatively connected to the contentsource to receive the image data and render an image based on the imagedata; a display engine communicatively connected to the applicationengine to display the image to a user, wherein the display engineprovides a screen size to the application engine the image having afirst size, the image being adjustable to a second size that is smallerthan the first size, a change in the screen size being the measureindicative of the adjustment of the image; and a detection system thatdetects a measure indicative of adjustment of the image from the firstsize to the second size, wherein the application, in response to thedetection, executes a clarification routine to maintain sharpness of theimage.
 24. A method of viewing content comprising: rendering, with anapplication engine, an image based on image data from a content source;displaying, with a display engine, the image to a user, wherein thedisplay engine provides a screen size to the application engine, whereinthe image has a first size, the image being adjustable to a second sizethat is smaller than the first size; detecting, with a detection system,a measure indicative of adjustment of the image from the first size tothe second size, a change in the screen size being the measureindicative of the adjustment of the image; and executing, with anapplication, in response to the detection, a clarification routine tomaintain sharpness of the image.